// Copyright 2017 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

// +build

#include <stdio.h>

#define PRINT(x)                                    \
	extern const unsigned char(x)[], x##_end[]; \
	print(#x, x, x##_end);

void print(const char* name, const unsigned char* start, const unsigned char* end)
{
	printf("const char %s[] = \"", name);
	for (const unsigned char* p = start; p < end; p++)
		printf("\\x%02x", *p);
	printf("\";\n");
}

int main()
{
	printf("// Code generated by executor/kvm_gen.cc. DO NOT EDIT.\n");
#if GOARCH_amd64
	PRINT(kvm_asm16_cpl3);
	PRINT(kvm_asm32_paged);
	PRINT(kvm_asm32_vm86);
	PRINT(kvm_asm32_paged_vm86);
	PRINT(kvm_asm64_enable_long);
	PRINT(kvm_asm64_init_vm);
	PRINT(kvm_asm64_vm_exit);
	PRINT(kvm_asm64_cpl3);
#elif GOARCH_ppc64le
	PRINT(kvm_ppc64_mr);
	PRINT(kvm_ppc64_ld);
	PRINT(kvm_ppc64_recharge_dec);
#endif
	return 0;
}
